using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.Common;

using UMEVOR.DTO;

using Microsoft.Practices.EnterpriseLibrary.Data;

namespace UMEVOR.DAL
{
    public class DALT_CASA_ESPIRITA : DALConnection
    {
        #region Incluir

        public void incluir(T_CASA_ESPIRITA obj)
        {
            StringBuilder SQL = new StringBuilder();
            try
            {
                Database database = getDatabase();

                SQL.Append(" INSERT INTO T_CASA_ESPIRITA ");
                SQL.Append("    (TX_NOME_INSTITUICAO, TX_ENDERECO, TX_NUMERO, TX_COMPLEMENTO, TX_BAIRRO, TX_UF, TX_CIDADE,");
                SQL.Append(" TX_TELEFONE, TX_FAX, TX_CEP, TX_EMAIL, TX_SITE, TX_HISTORICO, TX_FOTO, DT_FUNDACAO, TX_CNPJ)  VALUES ");
                SQL.Append("    ('" + obj.TX_NOME_INSTITUICAO + "', '" + obj.TX_ENDERECO + "', '" + obj.TX_NUMERO + "', '" + obj.TX_COMPLEMENTO + "', ");
                SQL.Append("'" + obj.TX_BAIRRO + "', '" + obj.TX_UF + "', '" + obj.TX_CIDADE + "', '" + obj.TX_TELEFONE + "', '" + obj.TX_FAX + "',");
                SQL.Append("'" + obj.TX_CEP + "', '" + obj.TX_EMAIL + "', '" + obj.TX_SITE + "', '" + obj.TX_HISTORICO + "', '" + obj.TX_FOTO.Replace("\\", "#") + "',");
                SQL.Append("str_to_date('" + obj.DT_FUNDACAO.ToString("dd/MM/yyy") + "', '%d/%m/%Y'), '" + obj.TX_CNPJ + "') ");

                DbCommand insertT_CASA_ESPIRITA = database.GetSqlStringCommand(SQL.ToString());

                insertT_CASA_ESPIRITA.CommandText = SQL.ToString();

                database.ExecuteNonQuery(insertT_CASA_ESPIRITA, DALConnection.transaction);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        #endregion

        #region Incluir[]

        public void incluir(T_CASA_ESPIRITA[] obj)
        {
            StringBuilder SQL = new StringBuilder();
            try
            {
                Database database = getDatabase();
                DbCommand[] insertT_CASA_ESPIRITA = new DbCommand[obj.Length];

                for (int index = 0; index < obj.Length; index++)
                {
                    T_CASA_ESPIRITA o = obj[index];
                    SQL = new StringBuilder();

                    SQL.Append(" INSERT INTO T_CASA_ESPIRITA ");
                    SQL.Append("    (ID_CASA_ESPIRITA, TX_NOME_INSTITUICAO, TX_ENDERECO, TX_NUMERO, TX_COMPLEMENTO, TX_BAIRRO, TX_UF, TX_CIDADE, TX_TELEFONE, TX_FAX, TX_CEP, TX_EMAIL, TX_SITE, TX_HISTORICO, TX_FOTO, DT_FUNDACAO, TX_CNPJ) ");
                    SQL.Append(" VALUES ");
                    SQL.Append("    (:ID_CASA_ESPIRITA, :TX_NOME_INSTITUICAO, :TX_ENDERECO, :TX_NUMERO, :TX_COMPLEMENTO, :TX_BAIRRO, :TX_UF, :TX_CIDADE, :TX_TELEFONE, :TX_FAX, :TX_CEP, :TX_EMAIL, :TX_SITE, :TX_HISTORICO, :TX_FOTO, :DT_FUNDACAO, :TX_CNPJ) ");

                    insertT_CASA_ESPIRITA[index] = database.GetSqlStringCommand(SQL.ToString());

                    database.AddInParameter(insertT_CASA_ESPIRITA[index], ":ID_CASA_ESPIRITA", DbType.Int64, o.ID_CASA_ESPIRITA);
                    database.AddInParameter(insertT_CASA_ESPIRITA[index], ":TX_NOME_INSTITUICAO", DbType.String, o.TX_NOME_INSTITUICAO);
                    database.AddInParameter(insertT_CASA_ESPIRITA[index], ":TX_ENDERECO", DbType.String, o.TX_ENDERECO);
                    database.AddInParameter(insertT_CASA_ESPIRITA[index], ":TX_NUMERO", DbType.String, o.TX_NUMERO);
                    database.AddInParameter(insertT_CASA_ESPIRITA[index], ":TX_COMPLEMENTO", DbType.String, o.TX_COMPLEMENTO);
                    database.AddInParameter(insertT_CASA_ESPIRITA[index], ":TX_BAIRRO", DbType.String, o.TX_BAIRRO);
                    database.AddInParameter(insertT_CASA_ESPIRITA[index], ":TX_UF", DbType.String, o.TX_UF);
                    database.AddInParameter(insertT_CASA_ESPIRITA[index], ":TX_CIDADE", DbType.String, o.TX_CIDADE);
                    database.AddInParameter(insertT_CASA_ESPIRITA[index], ":TX_TELEFONE", DbType.String, o.TX_TELEFONE);
                    database.AddInParameter(insertT_CASA_ESPIRITA[index], ":TX_FAX", DbType.String, o.TX_FAX);
                    database.AddInParameter(insertT_CASA_ESPIRITA[index], ":TX_CEP", DbType.String, o.TX_CEP);
                    database.AddInParameter(insertT_CASA_ESPIRITA[index], ":TX_EMAIL", DbType.String, o.TX_EMAIL);
                    database.AddInParameter(insertT_CASA_ESPIRITA[index], ":TX_SITE", DbType.String, o.TX_SITE);
                    database.AddInParameter(insertT_CASA_ESPIRITA[index], ":TX_HISTORICO", DbType.String, o.TX_HISTORICO);
                    database.AddInParameter(insertT_CASA_ESPIRITA[index], ":TX_FOTO", DbType.String, o.TX_FOTO);
                    database.AddInParameter(insertT_CASA_ESPIRITA[index], ":DT_FUNDACAO", DbType.DateTime, o.DT_FUNDACAO);
                    database.AddInParameter(insertT_CASA_ESPIRITA[index], ":TX_CNPJ", DbType.String, o.TX_CNPJ);

                    insertT_CASA_ESPIRITA[index].CommandText = SQL.ToString();
                }

                try
                {
                    foreach (DbCommand cmd in insertT_CASA_ESPIRITA)
                    {
                        database.ExecuteNonQuery(cmd, DALConnection.transaction);
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        #endregion

        #region Alterar

        public void alterar(T_CASA_ESPIRITA obj)
        {
            StringBuilder SQL = new StringBuilder();
            try
            {
                Database database = getDatabase();

                SQL.Append(" UPDATE T_CASA_ESPIRITA SET ");
                SQL.Append("    TX_NOME_INSTITUICAO = '" + obj.TX_NOME_INSTITUICAO + "' , ");
                SQL.Append("    TX_ENDERECO = '" + obj.TX_ENDERECO + "' , ");
                SQL.Append("    TX_NUMERO = '" + obj.TX_NUMERO + "' , ");
                SQL.Append("    TX_COMPLEMENTO = '" + obj.TX_COMPLEMENTO + "' , ");
                SQL.Append("    TX_BAIRRO = '" + obj.TX_BAIRRO + "' , ");
                SQL.Append("    TX_UF = '" + obj.TX_UF + "' , ");
                SQL.Append("    TX_CIDADE = '" + obj.TX_CIDADE + "' , ");
                SQL.Append("    TX_TELEFONE = '" + obj.TX_TELEFONE + "' , ");
                SQL.Append("    TX_FAX = '" + obj.TX_FAX + "' , ");
                SQL.Append("    TX_CEP = '" + obj.TX_CEP + "' , ");
                SQL.Append("    TX_EMAIL = '" + obj.TX_EMAIL + "' , ");
                SQL.Append("    TX_SITE = '" + obj.TX_SITE + "' , ");
                SQL.Append("    TX_HISTORICO = '" + obj.TX_HISTORICO + "' , ");
                SQL.Append("    TX_FOTO = '" + obj.TX_FOTO.Replace("\\", "#") + "' , ");
                SQL.Append("    DT_FUNDACAO =  str_to_date('" + obj.DT_FUNDACAO.ToString("dd/MM/yyy") + "', '%d/%m/%Y'), ");
                SQL.Append("    TX_CNPJ = '" + obj.TX_CNPJ + "' ");
                SQL.Append(" WHERE ");
                SQL.Append("     ID_CASA_ESPIRITA = " + obj.ID_CASA_ESPIRITA.ToString());

                DbCommand updateT_CASA_ESPIRITA = database.GetSqlStringCommand(SQL.ToString());

                updateT_CASA_ESPIRITA.CommandText = SQL.ToString();

                database.ExecuteNonQuery(updateT_CASA_ESPIRITA, DALConnection.transaction);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        #endregion

        #region Alterar[]

        public void alterar(T_CASA_ESPIRITA[] obj)
        {
            StringBuilder SQL = new StringBuilder();
            try
            {
                Database database = getDatabase();
                DbCommand[] updateT_CASA_ESPIRITA = new DbCommand[obj.Length];

                for (int index = 0; index < obj.Length; index++)
                {
                    T_CASA_ESPIRITA o = obj[index];
                    SQL = new StringBuilder();
                    SQL.Append(" UPDATE T_CASA_ESPIRITA SET ");
                    SQL.Append("    TX_NOME_INSTITUICAO = :TX_NOME_INSTITUICAO , ");
                    SQL.Append("    TX_ENDERECO = :TX_ENDERECO , ");
                    SQL.Append("    TX_NUMERO = :TX_NUMERO , ");
                    SQL.Append("    TX_COMPLEMENTO = :TX_COMPLEMENTO , ");
                    SQL.Append("    TX_BAIRRO = :TX_BAIRRO , ");
                    SQL.Append("    TX_UF = :TX_UF , ");
                    SQL.Append("    TX_CIDADE = :TX_CIDADE , ");
                    SQL.Append("    TX_TELEFONE = :TX_TELEFONE , ");
                    SQL.Append("    TX_FAX = :TX_FAX , ");
                    SQL.Append("    TX_CEP = :TX_CEP , ");
                    SQL.Append("    TX_EMAIL = :TX_EMAIL , ");
                    SQL.Append("    TX_SITE = :TX_SITE , ");
                    SQL.Append("    TX_HISTORICO = :TX_HISTORICO , ");
                    SQL.Append("    TX_FOTO = :TX_FOTO , ");
                    SQL.Append("    DT_FUNDACAO = :DT_FUNDACAO , ");
                    SQL.Append("    TX_CNPJ = :TX_CNPJ ");
                    SQL.Append(" WHERE ");
                    SQL.Append("     ID_CASA_ESPIRITA = :ID_CASA_ESPIRITA  ");

                    updateT_CASA_ESPIRITA[index] = database.GetSqlStringCommand(SQL.ToString());

                    database.AddInParameter(updateT_CASA_ESPIRITA[index], ":ID_CASA_ESPIRITA", DbType.Int64, o.ID_CASA_ESPIRITA);
                    database.AddInParameter(updateT_CASA_ESPIRITA[index], ":TX_NOME_INSTITUICAO", DbType.String, o.TX_NOME_INSTITUICAO);
                    database.AddInParameter(updateT_CASA_ESPIRITA[index], ":TX_ENDERECO", DbType.String, o.TX_ENDERECO);
                    database.AddInParameter(updateT_CASA_ESPIRITA[index], ":TX_NUMERO", DbType.String, o.TX_NUMERO);
                    database.AddInParameter(updateT_CASA_ESPIRITA[index], ":TX_COMPLEMENTO", DbType.String, o.TX_COMPLEMENTO);
                    database.AddInParameter(updateT_CASA_ESPIRITA[index], ":TX_BAIRRO", DbType.String, o.TX_BAIRRO);
                    database.AddInParameter(updateT_CASA_ESPIRITA[index], ":TX_UF", DbType.String, o.TX_UF);
                    database.AddInParameter(updateT_CASA_ESPIRITA[index], ":TX_CIDADE", DbType.String, o.TX_CIDADE);
                    database.AddInParameter(updateT_CASA_ESPIRITA[index], ":TX_TELEFONE", DbType.String, o.TX_TELEFONE);
                    database.AddInParameter(updateT_CASA_ESPIRITA[index], ":TX_FAX", DbType.String, o.TX_FAX);
                    database.AddInParameter(updateT_CASA_ESPIRITA[index], ":TX_CEP", DbType.String, o.TX_CEP);
                    database.AddInParameter(updateT_CASA_ESPIRITA[index], ":TX_EMAIL", DbType.String, o.TX_EMAIL);
                    database.AddInParameter(updateT_CASA_ESPIRITA[index], ":TX_SITE", DbType.String, o.TX_SITE);
                    database.AddInParameter(updateT_CASA_ESPIRITA[index], ":TX_HISTORICO", DbType.String, o.TX_HISTORICO);
                    database.AddInParameter(updateT_CASA_ESPIRITA[index], ":TX_FOTO", DbType.String, o.TX_FOTO);
                    database.AddInParameter(updateT_CASA_ESPIRITA[index], ":DT_FUNDACAO", DbType.DateTime, o.DT_FUNDACAO);
                    database.AddInParameter(updateT_CASA_ESPIRITA[index], ":TX_CNPJ", DbType.String, o.TX_CNPJ);

                    updateT_CASA_ESPIRITA[index].CommandText = SQL.ToString();
                }

                try
                {
                    foreach (DbCommand cmd in updateT_CASA_ESPIRITA)
                    {
                        database.ExecuteNonQuery(cmd, DALConnection.transaction);
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        #endregion

        #region Excluir

        public void excluir(T_CASA_ESPIRITA obj)
        {
            StringBuilder SQL = new StringBuilder();
            try
            {
                Database database = getDatabase();

                SQL.Append(" DELETE FROM T_CASA_ESPIRITA ");
                SQL.Append(" WHERE ");
                SQL.Append("     ID_CASA_ESPIRITA = " + obj.ID_CASA_ESPIRITA.ToString());

                DbCommand deleteT_CASA_ESPIRITA = database.GetSqlStringCommand(SQL.ToString());

                deleteT_CASA_ESPIRITA.CommandText = SQL.ToString();

                database.ExecuteNonQuery(deleteT_CASA_ESPIRITA, DALConnection.transaction);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        #endregion

        #region Excluir[]

        public void excluir(T_CASA_ESPIRITA[] obj)
        {
            StringBuilder SQL = new StringBuilder();
            try
            {
                Database database = getDatabase();
                DbCommand[] deleteT_CASA_ESPIRITA = new DbCommand[obj.Length];

                for (int index = 0; index < obj.Length; index++)
                {
                    T_CASA_ESPIRITA o = obj[index];
                    SQL = new StringBuilder();
                    SQL.Append(" DELETE FROM T_CASA_ESPIRITA ");
                    SQL.Append(" WHERE ");
                    SQL.Append("     ID_CASA_ESPIRITA = :ID_CASA_ESPIRITA  ");

                    deleteT_CASA_ESPIRITA[index] = database.GetSqlStringCommand(SQL.ToString());

                    database.AddInParameter(deleteT_CASA_ESPIRITA[index], ":ID_CASA_ESPIRITA", DbType.Int64, o.ID_CASA_ESPIRITA);

                    deleteT_CASA_ESPIRITA[index].CommandText = SQL.ToString();
                }

                try
                {
                    foreach (DbCommand cmd in deleteT_CASA_ESPIRITA)
                    {
                        database.ExecuteNonQuery(cmd, DALConnection.transaction);
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        #endregion

        #region ObterPorPK

        public T_CASA_ESPIRITA obterPorPK(long pID_CASA_ESPIRITA)
        {
            StringBuilder SQL = new StringBuilder();
            try
            {
                Database database = getDatabase();

                SQL.Append(" SELECT * FROM T_CASA_ESPIRITA ");
                SQL.Append(" WHERE ");
                SQL.Append("  ID_CASA_ESPIRITA = " + pID_CASA_ESPIRITA.ToString());

                DbCommand consultaT_CASA_ESPIRITA = database.GetSqlStringCommand(SQL.ToString());
                consultaT_CASA_ESPIRITA.CommandText = SQL.ToString();

                IDataReader reader = database.ExecuteReader(consultaT_CASA_ESPIRITA, DALConnection.transaction);
                T_CASA_ESPIRITA obj = null;

                if (reader.Read())
                {
                    obj = new T_CASA_ESPIRITA();
                    if (!reader.IsDBNull(reader.GetOrdinal("ID_CASA_ESPIRITA")))
                    {
                        obj.ID_CASA_ESPIRITA = Int64.Parse(reader["ID_CASA_ESPIRITA"].ToString());
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_NOME_INSTITUICAO")))
                    {
                        obj.TX_NOME_INSTITUICAO = reader["TX_NOME_INSTITUICAO"].ToString();
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_ENDERECO")))
                    {
                        obj.TX_ENDERECO = reader["TX_ENDERECO"].ToString();
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_NUMERO")))
                    {
                        obj.TX_NUMERO = reader["TX_NUMERO"].ToString();
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_COMPLEMENTO")))
                    {
                        obj.TX_COMPLEMENTO = reader["TX_COMPLEMENTO"].ToString();
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_BAIRRO")))
                    {
                        obj.TX_BAIRRO = reader["TX_BAIRRO"].ToString();
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_UF")))
                    {
                        obj.TX_UF = reader["TX_UF"].ToString();
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_CIDADE")))
                    {
                        obj.TX_CIDADE = reader["TX_CIDADE"].ToString();
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_TELEFONE")))
                    {
                        obj.TX_TELEFONE = reader["TX_TELEFONE"].ToString();
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_FAX")))
                    {
                        obj.TX_FAX = reader["TX_FAX"].ToString();
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_CEP")))
                    {
                        obj.TX_CEP = reader["TX_CEP"].ToString();
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_EMAIL")))
                    {
                        obj.TX_EMAIL = reader["TX_EMAIL"].ToString();
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_SITE")))
                    {
                        obj.TX_SITE = reader["TX_SITE"].ToString();
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_HISTORICO")))
                    {
                        obj.TX_HISTORICO = reader["TX_HISTORICO"].ToString();
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_FOTO")))
                    {
                        obj.TX_FOTO = reader["TX_FOTO"].ToString().Replace("#","\\");
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("DT_FUNDACAO")))
                    {
                        obj.DT_FUNDACAO = DateTime.Parse(reader["DT_FUNDACAO"].ToString());
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_CNPJ")))
                    {
                        obj.TX_CNPJ = reader["TX_CNPJ"].ToString();
                    }
                }
                reader.Dispose();
                consultaT_CASA_ESPIRITA.Dispose();

                return obj;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        #endregion

        #region ListarTodos
        public List<T_CASA_ESPIRITA> listarTodos()
        {
            StringBuilder SQL = new StringBuilder();
            try
            {
                Database database = getDatabase();

                SQL.Append(" SELECT * FROM T_CASA_ESPIRITA ORDER BY TX_NOME_INSTITUICAO");

                DbCommand consultaT_CASA_ESPIRITA = database.GetSqlStringCommand(SQL.ToString());
                consultaT_CASA_ESPIRITA.CommandText = SQL.ToString();

                IDataReader reader = database.ExecuteReader(consultaT_CASA_ESPIRITA, DALConnection.transaction);
                List<T_CASA_ESPIRITA> lista = new List<T_CASA_ESPIRITA>();
                T_CASA_ESPIRITA obj = null;

                while (reader.Read())
                {
                    obj = new T_CASA_ESPIRITA();
                    if (!reader.IsDBNull(reader.GetOrdinal("ID_CASA_ESPIRITA")))
                    {
                        obj.ID_CASA_ESPIRITA = Int64.Parse(reader["ID_CASA_ESPIRITA"].ToString());
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_NOME_INSTITUICAO")))
                    {
                        obj.TX_NOME_INSTITUICAO = reader["TX_NOME_INSTITUICAO"].ToString();
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_ENDERECO")))
                    {
                        obj.TX_ENDERECO = reader["TX_ENDERECO"].ToString();
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_NUMERO")))
                    {
                        obj.TX_NUMERO = reader["TX_NUMERO"].ToString();
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_COMPLEMENTO")))
                    {
                        obj.TX_COMPLEMENTO = reader["TX_COMPLEMENTO"].ToString();
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_BAIRRO")))
                    {
                        obj.TX_BAIRRO = reader["TX_BAIRRO"].ToString();
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_UF")))
                    {
                        obj.TX_UF = reader["TX_UF"].ToString();
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_CIDADE")))
                    {
                        obj.TX_CIDADE = reader["TX_CIDADE"].ToString();
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_TELEFONE")))
                    {
                        obj.TX_TELEFONE = reader["TX_TELEFONE"].ToString();
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_FAX")))
                    {
                        obj.TX_FAX = reader["TX_FAX"].ToString();
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_CEP")))
                    {
                        obj.TX_CEP = reader["TX_CEP"].ToString();
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_EMAIL")))
                    {
                        obj.TX_EMAIL = reader["TX_EMAIL"].ToString();
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_SITE")))
                    {
                        obj.TX_SITE = reader["TX_SITE"].ToString();
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_HISTORICO")))
                    {
                        obj.TX_HISTORICO = reader["TX_HISTORICO"].ToString();
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_FOTO")))
                    {
                        obj.TX_FOTO = reader["TX_FOTO"].ToString().Replace("#", "\\");
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("DT_FUNDACAO")))
                    {
                        obj.DT_FUNDACAO = DateTime.Parse(reader["DT_FUNDACAO"].ToString());
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_CNPJ")))
                    {
                        obj.TX_CNPJ = reader["TX_CNPJ"].ToString();
                    }
                    lista.Add(obj);
                }
                reader.Dispose();
                consultaT_CASA_ESPIRITA.Dispose();

                return lista;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public List<T_CASA_ESPIRITA> consultar(string descricao, DateTime dtFundacao, string uf, string cidade)
        {
            StringBuilder SQL = new StringBuilder();
            try
            {
                Database database = getDatabase();

                SQL.Append(" SELECT * FROM T_CASA_ESPIRITA");
                SQL.Append(" WHERE TX_NOME_INSTITUICAO LIKE '" + descricao + "%' AND TX_CIDADE LIKE '" + cidade + "%'");

                if (!uf.Equals(""))
                    SQL.Append("  AND TX_UF  = '" + uf + "'");

                if (dtFundacao.ToString("dd/MM/yyyy") != "01/01/0001")
                    SQL.Append(" AND DT_FUNDACAO = str_to_date('" + dtFundacao.ToString() + "', '%d/%m/%Y')");

                SQL.Append(" ORDER BY TX_NOME_INSTITUICAO");

                DbCommand consultaT_CASA_ESPIRITA = database.GetSqlStringCommand(SQL.ToString());
                consultaT_CASA_ESPIRITA.CommandText = SQL.ToString();

                IDataReader reader = database.ExecuteReader(consultaT_CASA_ESPIRITA, DALConnection.transaction);
                List<T_CASA_ESPIRITA> lista = new List<T_CASA_ESPIRITA>();
                T_CASA_ESPIRITA obj = null;

                while (reader.Read())
                {
                    obj = new T_CASA_ESPIRITA();
                    if (!reader.IsDBNull(reader.GetOrdinal("ID_CASA_ESPIRITA")))
                    {
                        obj.ID_CASA_ESPIRITA = Int64.Parse(reader["ID_CASA_ESPIRITA"].ToString());
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_NOME_INSTITUICAO")))
                    {
                        obj.TX_NOME_INSTITUICAO = reader["TX_NOME_INSTITUICAO"].ToString();
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_ENDERECO")))
                    {
                        obj.TX_ENDERECO = reader["TX_ENDERECO"].ToString();
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_NUMERO")))
                    {
                        obj.TX_NUMERO = reader["TX_NUMERO"].ToString();
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_COMPLEMENTO")))
                    {
                        obj.TX_COMPLEMENTO = reader["TX_COMPLEMENTO"].ToString();
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_BAIRRO")))
                    {
                        obj.TX_BAIRRO = reader["TX_BAIRRO"].ToString();
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_UF")))
                    {
                        obj.TX_UF = reader["TX_UF"].ToString();
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_CIDADE")))
                    {
                        obj.TX_CIDADE = reader["TX_CIDADE"].ToString();
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_TELEFONE")))
                    {
                        obj.TX_TELEFONE = reader["TX_TELEFONE"].ToString();
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_FAX")))
                    {
                        obj.TX_FAX = reader["TX_FAX"].ToString();
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_CEP")))
                    {
                        obj.TX_CEP = reader["TX_CEP"].ToString();
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_EMAIL")))
                    {
                        obj.TX_EMAIL = reader["TX_EMAIL"].ToString();
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_SITE")))
                    {
                        obj.TX_SITE = reader["TX_SITE"].ToString();
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_HISTORICO")))
                    {
                        obj.TX_HISTORICO = reader["TX_HISTORICO"].ToString();
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_FOTO")))
                    {
                        obj.TX_FOTO = reader["TX_FOTO"].ToString().Replace("#", "\\");
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("DT_FUNDACAO")))
                    {
                        obj.DT_FUNDACAO = DateTime.Parse(reader["DT_FUNDACAO"].ToString());
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("TX_CNPJ")))
                    {
                        obj.TX_CNPJ = reader["TX_CNPJ"].ToString();
                    }
                    lista.Add(obj);

                }
                reader.Dispose();
                consultaT_CASA_ESPIRITA.Dispose();

                return lista;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public int retornaCasaEspirita(string descricao)
        {
            StringBuilder SQL = new StringBuilder();
            try
            {
                Database database = getDatabase();

                SQL.Append(" SELECT ID_CASA_ESPIRITA FROM T_CASA_ESPIRITA");
                SQL.Append(" WHERE UPPER(TX_NOME_INSTITUICAO) LIKE '" + descricao.ToUpper() + "%'");

                DbCommand consultaT_CASA_ESPIRITA = database.GetSqlStringCommand(SQL.ToString());
                consultaT_CASA_ESPIRITA.CommandText = SQL.ToString();

                IDataReader reader = database.ExecuteReader(consultaT_CASA_ESPIRITA, DALConnection.transaction);
                int retorno = 0;
                if (reader.Read())
                {                    
                    if (!reader.IsDBNull(reader.GetOrdinal("ID_CASA_ESPIRITA")))
                        retorno = Int32.Parse(reader["ID_CASA_ESPIRITA"].ToString());
                }
                reader.Dispose();
                consultaT_CASA_ESPIRITA.Dispose();

                return retorno;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        #endregion
    }
}

